package cn.uway.dao;

import java.util.List;

import cn.uway.pojo.common.PageInfo;

/**
 * @author lyr
 * @category 默认数据访问对象接口
 * @version 0.0.1
 * @date 2016/1/3
 */
public interface IBaseDao<T> {
	/**
	 * 保存
	 * 
	 * @param sqlName
	 *            SQL语句ID
	 * @param parames
	 *            SQL语句参数
	 */
	public int save(String sqlName, Object parames);

	/**
	 * 更新
	 * 
	 * @param sqlName
	 *            SQL语句ID
	 * @param paramList
	 *            SQL语句参数
	 */
	public int update(String sqlName);
	
	public int update(String sqlName, Object parames);

	/**
	 * 删除
	 * 
	 * @param sqlName
	 *            SQL语句ID
	 * @param id
	 *            SQL语句参数
	 */
	
	public int delete(String sqlName);
	
	public int delete(String sqlName, Object parames);

	/**
	 * 查询单条记录
	 * 
	 * @param sqlName
	 *            SQL语句ID
	 * @return 查询结果
	 */
	public T selectOne(String sqlName);

	/**
	 * 查询单条记录
	 * 
	 * @param sqlName
	 *            SQL语句ID
	 * @param params
	 *            SQL语句参数
	 * @return 查询结果
	 */
	public T selectOne(String sqlName, Object params);

	/**
	 * 查询多条记录
	 * 
	 * @param sqlName
	 *            SQL语句ID
	 * @return 查询结果
	 */
	public List<T> selectList(String sqlName);

	/**
	 * 查询多条记录
	 * 
	 * @param sqlName
	 *            SQL语句ID
	 * @param params
	 *            SQL语句参数
	 * @return 查询结果
	 */
	public List<T> selectList(String sqlName, Object params);
	
	/**
	 * 查询记录数
	 * 
	 * @param sqlName
	 *            SQL语句ID
	 * @param params
	 *            SQL语句参数
	 * @return 查询结果
	 */
	public int selectCount(String sqlName, Object params);

	/**
	 * 查询多条记录
	 * 
	 * @param sqlName
	 *            SQL语句ID
	 * @param params
	 *            SQL语句参数
	 * @param pageNo
	 *            查询的实际页
	 * @param pageSize
	 *            每页记录行数
	 * @return 查询结果
	 */
	public PageInfo pageQuery(String countKey, String sqlKey, Object param, Integer pageNo, Integer pageSize) ;

}
